package com.tenton.utils;/**
 * @Author:konglingyang
 * @Date: 2022/12/15$ 15:52$
 * @PRODUCT_NAME com.kdhy.ims.app.signal.util
 * @PROJECT_NAME ims
 * @DESCRIPTION 补码转原码
 */

/**
 * @ClassName: StringTransUtil
 * @Description: 十六进制转换
 * @Author： tangdong
 * @Date： 2024/6/25
 */
public class StringTransUtil {

    /**
     * 根据十六进制的补码转为十进制原码（转为Short类型）
     *
     * @param hexStr
     * @return
     */
    public static Short hexComTransDecShort(String hexStr) {
        int i = Integer.parseInt(hexStr, 16);
        if (i >= Math.pow(2, 15)) {
            i -= Math.pow(2, 16);
        }
        return (short) i;
    }

    /**
     * 根据十六进制的补码转为十进制原码（转为Integer类型）
     *
     * @param hexStr
     * @return
     */
    public static Integer hexComTransDecInt(String hexStr) {
        if (hexStr.toUpperCase().contains("H")) {
            hexStr = hexStr.replace("H", "");
        }
        int i = Integer.parseInt(hexStr, 16);
        if (i >= Math.pow(2, 31)) {
            i -= Math.pow(2, 32);
        }
        return i;
    }

    /**
     * 根据十六进制的补码转为十进制原码（转为Byte类型）
     *
     * @param hexStr
     * @return
     */
    public static Byte hexComTransDecByte(String hexStr) {
        int i = Integer.parseInt(hexStr, 16);
        if (i >= Math.pow(2, 7)) {
            i -= Math.pow(2, 8);
        }
        return (byte) i;
    }
}
